package com.deuwise.common.utils.authorize;

import com.deuwise.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created by JAVA on 2018/7/24.
 * @author chenwenchao
 * @date 2019-07-03
 */
@Component
public class LicenseCode {

    private static String name;

    private static String regionCode;

    @Value("${bootsystem.name}")
    public  void setName(String name1) {
        name = name1;
    }
    @Value("${bootsystem.region-code}")
    public  void setRegionCode(String regionCode1) {
        regionCode = regionCode1;
    }
    /**
     * 申请码
     * @return
     */
    public static String getApplyCode(){

        return getApplyCode(getBaseCode(name,regionCode));
    }

    /**
     * 申请码里加上了当前时间，
     * 因为系统名称+行政区划+硬盘号+当前时间构成了申请码
     * 系统名称+行政区划+硬盘号+授权时间+授权截止时间构成了授权码
     * 两者的不同，仅仅在于授权码多了一个截止时间。
     * @param no
     * @return
     */
    public static String getApplyCode(String no){
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        String now= formatter.format(new Date());
        //因为申请码
        no=no+","+ now;
        try {
            return DESUtils.encrypt(no);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return no;
    }

    /**
     * 解密申请码或者授权码的方法
     * @param no
     * @return
     */
    public static String getPlaintext(String no){
        try {
            return DESUtils.decrypt(no);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 拼接字符串
     * @param xm_name
     * @param xzqh
     * @return
     */
    public static String getBaseCode(String xm_name,String xzqh){
        //获取硬盘序号
        String motherboard = SerialNumberUtil.getDiskNo();
        StringBuilder sb = new StringBuilder(100);
        //系统,行政区划,硬盘序号
        sb.append(xm_name).append(",")
                .append(xzqh).append(",")
                .append(motherboard);
        return sb.toString();
    }

}
